package cn.ondraw.ragflow.service;

import cn.ondraw.ragflow.pojo.request.*;
import cn.ondraw.ragflow.pojo.response.*;
import cn.ondraw.ragflow.pojo.request.*;
import cn.ondraw.ragflow.pojo.response.*;
import cn.ondraw.ragflow.pojo.request.*;
import cn.ondraw.ragflow.pojo.response.*;
import org.springframework.stereotype.Service;

@Service
public interface ChunkService {
    /**
     * 添加块
     *
     * @param datasetId  关联的数据集 ID
     * @param documentId 关联的文档 ID
     * @param request    添加块的请求对象
     * @return 添加块的响应对象
     */
    AddChunkResponse addChunk(String datasetId, String documentId, AddChunkRequest request);

    /**
     * 列出块
     *
     * @param request 列出块的请求对象
     * @return 列出块的响应对象
     */
    ListChunksResponse listChunks(ListChunksRequest request);

    /**
     * 删除块
     *
     * @param datasetId  关联的数据集 ID
     * @param documentId 关联的文档 ID
     * @param request    删除块的请求对象
     * @return 删除块的响应对象
     */
    DeleteChunksResponse deleteChunks(String datasetId, String documentId, DeleteChunksRequest request);

    /**
     * 更新块
     *
     * @param datasetId  关联的数据集 ID
     * @param documentId 关联的文档 ID
     * @param chunkId    要更新的块的 ID
     * @param request    更新块的请求对象
     * @return 更新块的响应对象
     */
    UpdateChunkResponse updateChunk(String datasetId, String documentId, String chunkId, UpdateChunkRequest request);

    /**
     * 检索块
     *
     * @param request 检索块的请求对象
     * @return 检索块的响应对象
     */
    RetrieveChunksResponse retrieveChunks(RetrieveChunksRequest request);

    /**
     * 测试检索块
     *
     * @param request 检索块的请求对象
     * @return 检索块的响应对象
     */
    Object chunksRetrieveTest(RetrieveTestChunksRequest request);
}
